package org.dromara.xhlj.domain.vo;

import java.math.BigDecimal;
import org.dromara.xhlj.domain.XhljActivityTaskTemplate;
import org.dromara.xhlj.domain.XhljActivityTask;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.core.utils.tree.TreeCruxField;
import org.dromara.wx.domain.WxUser;
import org.dromara.wx.domain.vo.WxUserVo;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 活动任务模版视图对象 xhlj_activity_task_template
 *
 * @author yf
 * @date 2024-07-28
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XhljActivityTaskTemplate.class)
public class XhljActivityTaskTemplateVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 任务模版ID
     */
    @ExcelProperty(value = "任务模版ID")
    private Integer taskTemplateId;
    /**
     * 任务类型（0=登录西湖论剑小程序，1=完善个人信息，2=观看直播回放10次，3=观看直播回放满30分钟，4=发帖量达到10次，5=订阅并报名活动1次，6=分享海报至微信好友，7=下载资料5次，8=参与会议聊天讨论20次，9=会议线下签到，10=参加现场活动，11=展商线下打卡，12=线下抽奖，13=体验展商产品并留言）
     */
    @ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "task_type")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "task_type", mapper = "taskType")
    private String taskTypeDictData;
    private String taskType;
    /**
     * 创建人sys_user（大会管理员/活动负责人）
     */
    @ExcelProperty(value = "创建人sys_user")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = SysUser.TRANS_ID_TO_VO, mapper = "createBy")
    private SysUserVo sysUser;
    private Integer createBy;
    /**
     * 任务模版说明
     */
    @ExcelProperty(value = "任务模版说明")
    private String detailedDescription;
    /**
     * 任务参与条件类型（0=线上/线下，1=仅线上，2=仅线下）
     */
    @ExcelProperty(value = "任务参与条件类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "task_participation_condition_type")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "task_participation_condition_type", mapper = "taskParticipationConditionType")
    private String taskParticipationConditionTypeDictData;
    private String taskParticipationConditionType;
    /**
     * 任务完成类型（0=扫二维码，1=验证码，2=拍照打卡，3=线上）
     */
    @ExcelProperty(value = "任务完成类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "done_type")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "done_type", mapper = "doneType")
    private String doneTypeDictData;
    private String doneType;
    /**
     * 任务奖励类型（0=积分，1=纪念品）
     */
    @ExcelProperty(value = "任务奖励类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "reward_method_type")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "reward_method_type", mapper = "rewardMethodType")
    private String rewardMethodTypeDictData;
    private String rewardMethodType;
    /**
     * 积分
     */
    @ExcelProperty(value = "积分")
    private BigDecimal points;
    /**
     * 奖品名称
     */
    @ExcelProperty(value = "奖品名称")
    private String rewardName;
    /**
     * 奖励图片
     */
    @ExcelProperty(value = "奖励图片")
    private String rewardImage;
    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 活动任务 子列表
     */
    @JsonIgnore
    @Translation(type = XhljActivityTask.TRANS_ID_TO_VO_LIST, mapper = "taskTemplateId" , other = "activity_task_template_id")
    private List<XhljActivityTaskVo> xhljActivityTaskVoList;
}
